package com.kuang.simpleFactory;

import com.kuang.service.Car;
import com.kuang.service.impl.DaZhong;
import com.kuang.service.impl.Tesla;
import com.kuang.service.impl.WuLing;

/**
 * @Title:
 * @Description:
 * 简单工厂模式（静态工厂模式）：
 *       1.违背了开闭原则
 * @Author: zx
 * @Date: create in 15:47 2020/7/31
 * @Version: 1.0
 */
public class CarFactory {

    /**
     * 方式一
     * 如果需要新增车辆品牌，就需要改动getCar方法才能实现新增
     *
     * @param carName
     * @return
     */
    public static Car getCar(String carName) {
        Car car = null;
        switch (carName) {
            case "五菱宏光":
                car = new WuLing();
                break;
            case "特斯拉":
                car = new Tesla();
                break;
            case "大众":
                car = new DaZhong();
                break;
        }
        return car;
    }

    // -----------------------------------------------------------------------------------------

    /**
     *  方式二不要改动原有方法，但是需要改动原有类
     */
    public static WuLing getWuLin() {
        return new WuLing();
    }

    public static Tesla getTesla() {
        return new Tesla();
    }

    /**
     * 工厂 新增大众品牌
     *
     * @return
     */
    public static DaZhong getDaZhong() {
        return new DaZhong();
    }

}
